package com.example.controller;

import com.example.pojo.Dept;
import com.example.pojo.Result;
import com.example.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/*
* 部门管理Contrller
* */
/*@RequestMapping("depts") //抽取公共路径*/
@Slf4j //输出语句到控制台
@RestController
public class DeptController {

        //controller 是要给Service的
        @Autowired
        private DeptService deptService;

        /*查询部门信息*/
        //@RequestMapping(value = "/depts",method = RequestMethod.GET) //要传输的路径 请求方法只能是GET
        @GetMapping("depts") //请求方法只能是GET--抽取路径
        public Result list(){ //定义方法 返回及响应的Result
            log.info("查询全部部门数据");

            //调用service.list 查询部门
            List<Dept> deptList = deptService.list();
            return Result.success(); //返回一个正确的
        }

        /*删除部门--删除不存在的会删除成功*/
        @DeleteMapping("/depts/{id}") //要传输的路径参数 参数要用{}包裹
        public Result deletedept (@PathVariable Integer id) throws Exception { // 参数注解为PathVariable
            log.info("根据部门删除id: {}",id);
            deptService.delete(id);
            return Result.success();
        }

        /* 新增部门*/
        //@ResponBosy 将响应的实体类转为json发送给前端
        //@RequestBosy 将request的json转为实体类发给后端 json数据封装到实体类
        @PostMapping("/depts")
        public  Result add(@RequestBody Dept dept){
            log.info("新增部门：{}",dept);
            deptService.add(dept);
            return Result.success();
        }

        //根据id查询部门
        @GetMapping("/depts/{id}")
        public Result select(@PathVariable Integer id){
            log.info("根据id查询部门：{}",id);
            //查询id返回值可以是集合或者 表的话集合
            Dept dept = deptService.select1(id);
            return Result.success(dept);
        }

        //修改部门 根据id修改表
        @PutMapping("/depts")
        public Result update(@RequestBody Dept dept){
            log.info("根据ID修改部门:{}",dept);
            deptService.update(dept);
            return Result.success();
        }



}
